//入口文件
console.log("ok")

import Vue from 'vue'
import App from './App.vue'
// 1导入vue-router
import VueRouter from 'vue-router'
//2安装路由
Vue.use(VueRouter)

import Vuex from 'vuex'
Vue.use(Vuex)

// 刚一进来先获取本地的car数组。,由于我们得到的是字符穿数组，所以应该将字符穿数组转成纯数组。
var car = JSON.parse(localStorage.getItem('car') || '[]')

var store = new Vuex.Store({
  state: {
    //this.$store.state.属性名
    car: car//将购物车中的商品的数据，用一个数组存储起来，{id,count,price,selected}

  },
  mutations: {
    // this.$store.commit('方法名','按需传递唯一的参数')
    addtocar(state, goodinfo) {
      //分析如何将购买的不同的种类的商品的数量加入到购物车中
      //1.如果购物车之前有 数量 那么只需要更新数量就行。如果没有则直接将商品的数据push到car中。

      //表示购物车中没有商品
      var flag = false
      state.car.some(item => {
        if (item.id == goodinfo.id) {
          item.count += parseInt(goodinfo.count)
          flag = true
          return true;
        }
      })
      // 如果在加入购物车之前，购物车没有任何商品，那么就直接将此时的购物车信息对象push到car中
      if (!flag) {
        state.car.push(goodinfo)
      }
      // 存入到本地
      localStorage.setItem('car', JSON.stringify(state.car))

    },
    updatagoodinfo(state, goodinfo) {
      state.car.some(item => {
        if (item.id == goodinfo.id) {
          // 这里出问题了转成数字。
          item.count = parseInt(goodinfo.count)
          return true;
        }
      })

      localStorage.setItem('car', JSON.stringify(state.car))
    },
    removeshoponecar(state, id) {
      state.car.some((item, index) => {
        if (item.id == id) {
          console.log("ok")
          state.car.splice(index, 1)
          return true
        }

      })
      localStorage.setItem('car', JSON.stringify(state.car))
    },
    updatagoodselected(state, obj) {
      // console.log(obj)
      state.car.some(item => {
        if (item.id == obj.id) {
          // console.log(obj.selected)
          item.selected = obj.selected
        }
      })
      localStorage.setItem('car', JSON.stringify(state.car))
    }
  },
  getters: {//相当于计算属性，也相当于 filters
    //$store.getters.方法
    // 这是得到所有加入购物车商品的数量
    getallcount(state) {
      var c = 0;
      state.car.forEach(item => {
        c += item.count
      })
      return c;
    },
    // 这是得到购物车中指定每个id的商品的数量
    getgoodcount(state) {
      var o = {}
      state.car.forEach(item => {
        o[item.id] = item.count
      })
      return o;
    },
    getgoodselected(state) {
      var o = {}
      state.car.forEach(item => {
        o[item.id] = item.selected;
      })
      return o;
    },
    //用来计算购物车页面的选中的商品的数量和价格
    getgoodcountandamount(state){
      var o={
        count:0,
        amount:0
      }
      state.car.forEach(item=>{
        if(item.selected){//如果被选中则计算数量和价格
          o.count+=item.count;
          o.amount+=item.price*item.count
        }
      })
      return o;
    }

  }
})

// //按需导入header从mint-ui
// import { Header,Swipe, SwipeItem ,Button,Lazyload } from 'mint-ui'
// //将header作为组件注册到vue上
// Vue.component(Header.name, Header)
// Vue.component(Swipe.name, Swipe)
// Vue.component(SwipeItem.name, SwipeItem)
// Vue.component(Button.name,Button)
// //懒加载图片
// Vue.use(Lazyload)

// 只有导入全部的mint-ui才可以实现懒加载功能。
import Mintui from 'mint-ui'
Vue.use(Mintui)
import 'mint-ui/lib/style.css'

import './lib/mui/css/mui.css'
import './lib/mui/css/icons-extra.css'

// 3导入自己的router.js路由模块
import router from './router.js'
//导入vue-resource,发起网络请求
import VueResource from 'vue-resource'
Vue.use(VueResource)

// 设置vueresource请求的根路径。
Vue.http.options.root = "http://www.baidus.com"
//设置post提交数据的编码格式
Vue.http.options.emulateJSON = true
import moment from 'moment'
// 定义全局过滤器
Vue.filter('dateFormat', function (datestr, pattern = 'YYYY-MM-DD HH:mm:ss') {
  return moment(datastr).format(pattern)
})

import VuePreview from 'vue-preview'
Vue.use(VuePreview)
Vue.use(VuePreview, {
  mainClass: 'pswp--minimal--dark',
  barsSize: { top: 0, bottom: 0 },
  captionEl: false,
  fullscreenEl: false,
  shareEl: false,
  bgOpacity: 0.85,
  tapToClose: true,
  tapToToggleControls: false
})

var vm = new Vue({
  el: "#app",
  data: {

  },
  methods: {

  },
  render: c => c(App),
  router,//4挂在到vm上。
  store
})